package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;

/**
 * 程序启动后，要求完成用户注册功能
 * 1.提示用户分别输入用户名，密码，昵称，年龄
 * 2.将用户输入的信息插入到userinfo表中
 */
public class RegDemo {
    public static void main(String[] args) throws Exception {
        /*
        UserInfo userInfo=new UserInfo();
        Scanner scanner = new Scanner(System.in);
        System.out.println("欢迎注册");

        System.out.println("请输入用户名");
        String username = scanner.nextLine();
        System.out.println("请输入密码");
        String password = scanner.nextLine();
        System.out.println("请输入昵称");
        String nickname = scanner.nextLine();
        System.out.println("请输入年龄");
        int age = scanner.nextInt();

        int num=reg(userInfo);
        if(num>0){
            System.out.println("注册成功");
        }

         */
        UserInfo userInfo = InputUtil.getInputObject(new UserInfo(), "欢迎注册","注册");
        System.out.println(userInfo);

        int num = reg(userInfo);
        if (num > 0) {
            System.out.println("注册成功");

        }
    }



        public static int reg(UserInfo userInfo) throws Exception {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection(
                    //数据库地址格式:jdbc:mysql://数据库IP:端口/数据库名?一堆参数
                    "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                    "root",//数据库用户名
                    "root"//数据库密码
            );
            Statement statement = connection.createStatement();
        /*
            向userinfo表中插入一条记录

            INSERT INTO userinfo(username,password,nickname,age)
            VALUES('张三','123456','阿三',22)
         */
            String sql = "INSERT INTO userinfo(username,password,nickname,age) " +
                    "VALUES('"+userInfo.getUsername()+"','"+userInfo.getPassword()+"','"+userInfo.getNickname()+"',"+userInfo.getAge()+")";
            System.out.println(sql);
        /*
            int executeUpdate(String sql)
            专门用于执行DML语句的(INSERT,UPDATE,DELETE)
            返回值表达执行该语句后影响了表中多少条记录
         */
            int num = statement.executeUpdate(sql);
            connection.close();
            return num;

    }
}
